// Inspired by https://github.com/scalar/scalar/blob/0a95cf67194d92a14552a5b2f947f25b652901f5/packages/openapi-parser/tests/benchmark/examples/petstore.json (Scalar uses Microdiff for diffing OpenAPI docs like this one)
export const name = "Scalar/OpenAPI Document";
export const form = "realistic";
export const original = {
	openapi: "3.0.0",
	info: {
		version: "1.0.0",
		title: "Swagger Petstore",
		license: {
			name: "MIT",
		},
	},
	servers: [
		{
			url: "http://petstore.swagger.io/v1",
		},
	],
	paths: {
		"/pets": {
			get: {
				summary: "List all pets",
				operationId: "listPets",
				tags: ["pets"],
				parameters: [
					{
						name: "limit",
						in: "query",
						description: "How many items to return at one time (max 100)",
						required: false,
						schema: {
							type: "integer",
							maximum: 100,
							format: "int32",
						},
					},
				],
				responses: {
					200: {
						description: "A paged array of pets",
						headers: {
							"x-next": {
								description: "A link to the next page of responses",
								schema: {
									type: "string",
								},
							},
						},
						content: {
							"application/json": {
								schema: {
									$ref: "#/components/schemas/Pets",
								},
							},
						},
					},
					default: {
						description: "unexpected error",
						content: {
							"application/json": {
								schema: {
									$ref: "#/components/schemas/Error",
								},
							},
						},
					},
				},
			},
			post: {
				summary: "Create a pet",
				operationId: "createPets",
				tags: ["pets"],
				requestBody: {
					content: {
						"application/json": {
							schema: {
								$ref: "#/components/schemas/Pet",
							},
						},
					},
					required: true,
				},
				responses: {
					201: {
						description: "Null response",
					},
					default: {
						description: "unexpected error",
						content: {
							"application/json": {
								schema: {
									$ref: "#/components/schemas/Error",
								},
							},
						},
					},
				},
			},
		},
		"/pets/{petId}": {
			get: {
				summary: "Info for a specific pet",
				operationId: "showPetById",
				tags: ["pets"],
				parameters: [
					{
						name: "petId",
						in: "path",
						required: true,
						description: "The id of the pet to retrieve",
						schema: {
							type: "string",
						},
					},
				],
				responses: {
					200: {
						description: "Expected response to a valid request",
						content: {
							"application/json": {
								schema: {
									$ref: "#/components/schemas/Pet",
								},
							},
						},
					},
					default: {
						description: "unexpected error",
						content: {
							"application/json": {
								schema: {
									$ref: "#/components/schemas/Error",
								},
							},
						},
					},
				},
			},
		},
	},
	components: {
		schemas: {
			Pet: {
				type: "object",
				required: ["id", "name"],
				properties: {
					id: {
						type: "integer",
						format: "int64",
					},
					name: {
						type: "string",
					},
					tag: {
						type: "string",
					},
				},
			},
			Pets: {
				type: "array",
				maxItems: 100,
				items: {
					$ref: "#/components/schemas/Pet",
				},
			},
			Error: {
				type: "object",
				required: ["code", "message"],
				properties: {
					code: {
						type: "integer",
						format: "int32",
					},
					message: {
						type: "string",
					},
				},
			},
		},
	},
};
export const changed = structuredClone(original);
changed.components.schemas.Pet.properties.preferredFood = { type: "string" };
changed.info.version = "1.1.0";
